home *** CD-ROM | disk | FTP | other *** search
/ Aminet 16 / Aminet 16 (1996)(GTI - Schatztruhe)[!][Dec 1996].iso / Aminet / dev / src / wangisrc.lha / wangi / z / SM / SMPrefs / Window_Main.PAS < prev    next >
Pascal/Delphi Source File  |  1995-07-11  |  12KB  |  331 lines

  1. Procedure DisableGadget;
  2.  
  3. VAR Dis_Tags : array[0..1] of tTagItem;
  4.  
  5. begin
  6.     Dis_Tags[0].ti_Tag  := GA_Disabled;
  7.     Dis_Tags[0].ti_Data := Disable;
  8.     Dis_Tags[1].ti_Tag  := TAG_END;
  9.     GT_SetGadgetAttrsA(g,w,NIL,@Dis_Tags);
  10. end;
  11.  
  12. { refresh the window }
  13. Procedure RefreshWin;
  14. begin
  15.     GT_BeginRefresh(Window);
  16.     GT_EndRefresh(Window, True);
  17. end;
  18.  
  19. { open the main window }
  20. Function open_window;
  21.  
  22. Var 
  23.     tgs       : Array[0..16] Of tTagItem;
  24.     sampTxt   : tIntuiText;
  25.     screendef : pScreen;
  26.     OK        : Boolean;
  27.     nd        : pNode;
  28.     n         : Integer;
  29.    
  30. CONST
  31.     mm : Array[0..13] of tNewMenu = (
  32.         (nm_Type:NM_TITLE),
  33.         (nm_Type:NM_ITEM),
  34.         (nm_Type:NM_ITEM),
  35.         (nm_Type:NM_ITEM),
  36.         (nm_Type:NM_ITEM),
  37.         (nm_Type:NM_ITEM),
  38.         (nm_Type:NM_ITEM),
  39.         (nm_Type:NM_ITEM),
  40.         (nm_Type:NM_TITLE),
  41.         (nm_Type:NM_ITEM),
  42.         (nm_Type:NM_ITEM),
  43.         (nm_Type:NM_TITLE),
  44.         (nm_Type:NM_ITEM),
  45.         (nm_Type:NM_END));
  46.  
  47. Begin
  48.     Open_Window := False;
  49.     mm[0].nm_Label := CStrConstPtrAR(@RememberKey, 'Project');
  50.     mm[1].nm_Label := CStrConstPtrAR(@RememberKey, 'Open...');
  51.     mm[2].nm_Label := CStrConstPtrAR(@RememberKey, 'Save as...');
  52.     mm[3].nm_Label := CStrConstPtrAR(@RememberKey, 'Test');
  53.     mm[4].nm_Label := STRPTR(NM_BARLABEL);
  54.     mm[5].nm_Label := CStrConstPtrAR(@RememberKey, 'About');
  55.     mm[6].nm_Label := STRPTR(NM_BARLABEL);
  56.     mm[7].nm_Label := CStrConstPtrAR(@RememberKey, 'Quit');
  57.     
  58.     mm[8].nm_Label := CStrConstPtrAR(@RememberKey, 'Edit');
  59.     mm[9].nm_Label := CStrConstPtrAR(@RememberKey, 'Reset To Defaults');
  60.     mm[10].nm_Label := CStrConstPtrAR(@RememberKey, 'Restore');
  61.     
  62.     mm[11].nm_Label := CStrConstPtrAR(@RememberKey, 'Settings');
  63.     mm[12].nm_Label := CStrConstPtrAR(@RememberKey, 'Create Icons?');
  64.  
  65.     mm[1].nm_CommKey := CStrConstPtrAR(@RememberKey, 'O');
  66.     mm[2].nm_CommKey := CStrConstPtrAR(@RememberKey, 'A');
  67.     mm[7].nm_CommKey := CStrConstPtrAR(@RememberKey, 'Q');
  68.     
  69.     mm[9].nm_CommKey := CStrConstPtrAR(@RememberKey, 'D');
  70.     mm[10].nm_CommKey := CStrConstPtrAR(@RememberKey, 'R');
  71.     
  72.     mm[12].nm_CommKey := CStrConstPtrAR(@RememberKey, 'I');
  73.     mm[12].nm_Flags   := NM_ITEMDISABLED|CHECKIT|MENUTOGGLED;
  74.  
  75.     WindowIDCMP := INTEGERIDCMP Or IDCMP_REFRESHWINDOW 
  76.         Or BUTTONIDCMP Or LISTVIEWIDCMP
  77.         OR CHECKBOXIDCMP OR IDCMP_VANILLAKEY OR IDCMP_MENUPICK or IDCMP_CLOSEWINDOW;
  78.     gads[G_NI]  := NIL;
  79.    
  80.     ScreenDef := LockPubScreen(NIL);
  81.  
  82.     { Get visual info and create context }
  83.     vi := GetVisualInfoA(screendef, NIL);
  84.     If vi <> NIL Then begin
  85.         Gads[G_CC] := CreateContext(@gads[G_NI]);
  86.         If Gads[G_CC] <> NIL Then begin
  87.             { Get some data from the screen }
  88.  
  89.             Sizes[TBS]   := screendef^.WBorTop + (screendef^.Font^.ta_YSize + 1);
  90.  
  91.             My_Font := Screendef^.Font^;
  92.             if (My_Font.ta_YSize*(ListViewRows+5)>Screendef^.Height) then begin 
  93.                 with My_Font do begin
  94.                     ta_Name    := CStrConstPtrAR(@RememberKey, 'topaz.font');
  95.                     ta_YSize   := 8;
  96.                     ta_Style   := FS_NORMAL;
  97.                     ta_Flags   := FPF_ROMFONT
  98.                 end;
  99.                 Sizes[S_Gad_H] := 9+screendef^.WBorTop+1;
  100.             end else
  101.                 Sizes[S_Gad_H] := sizes[TBS] + 1;
  102.                 
  103.             Sizes[S_CM_W] := (Sizes[S_Gad_H]*2)+(Sizes[S_Gad_H] div 3);
  104.  
  105.             ZoomSizes[3] := Sizes[TBS];
  106.    
  107.             sizes[S_WB_T]    := Screendef^.WBorTop;
  108.             sizes[S_WB_L]    := Screendef^.WBorLeft;
  109.             sizes[S_WB_R]    := Screendef^.WBorRight;
  110.             sizes[S_WB_B]    := Screendef^.WBorBottom;
  111.    
  112.             Samptxt.ITextFont := @My_Font;
  113.             Sizes[S_G1_L] := Sizes[S_WB_L] + Sizes[S_WB_L];
  114.             Samptxt.IText := @G_B_BOTTOMtxt[1];
  115.             Sizes[S_G1_W] := IntuiTextLength(@Samptxt) + 10;
  116.             Samptxt.IText := @Sampstr[1];
  117.             Sizes[S_G2_W] := IntuiTextLength(@Samptxt) + 10;
  118.             Sizes[S_G2_L] := sizes[S_G1_L] + sizes[S_G1_W] + sizes[S_WB_L];
  119.             Samptxt.IText := @sampstr2[1];
  120.             Sizes[S_G3_W] := IntuiTextLength(@Samptxt) + 20;
  121.             Sizes[S_G3_L] := sizes[S_G2_L] + sizes[S_G2_W] + 6;
  122.             Samptxt.IText := CStrConstPtrAR(@RememberKey, 'System options...');
  123.             sizes[extra] := IntuiTextLength(@Samptxt);
  124.             Samptxt.IText := CStrConstPtrAR(@RememberKey, 'The Requesters');
  125.             sizes[S_SCRID_W] := IntuiTextLength(@Samptxt) + 20;
  126.             Samptxt.IText := CStrConstPtrAR(@RememberKey, 'ARexx Command');
  127.             Sizes[TxtWin_L] := IntuiTextLength(@Samptxt) + 25;
  128.             Samptxt.IText := CStrConstPtrAR(@RememberKey, 'Initial ARexx command');
  129.             Sizes[RexxWin_L] := IntuiTextLength(@Samptxt) + 25;
  130.             Samptxt.IText := CStrConstPtrAR(@RememberKey, 'ASynch ');
  131.             Sizes[Synch_W] := IntuiTextLength(@Samptxt) + 7;
  132.             Samptxt.IText := CStrConstPtrAR(@RememberKey, 'Sanghai windows to default public screen ');
  133.             Sizes[SOTxt_W] := IntuiTextLength(@Samptxt) + 20;
  134.             Samptxt.IText := CStrConstPtrAR(@RememberKey, 'Middle Mouse Button');
  135.             Sizes[QTxt_W] := IntuiTextLength(@Samptxt) + 20; 
  136.             
  137.             { Initilise gadget structures }
  138.             tgs[0].ti_Tag  := GA_Disabled;
  139.             tgs[0].ti_Data := True_;
  140.             tgs[1].ti_Tag  := GT_UnderScore;
  141.             tgs[1].ti_Data := LONG('_');
  142.             tgs[2].ti_Tag  := TAG_END;
  143.    
  144.             With GadgetFlags Do Begin
  145.                 ng_TextAttr   := @My_Font;
  146.                 ng_LeftEdge   := sizes[S_G1_L]+5;
  147.                 ng_TopEdge    := (Sizes[TBS]+Sizes[S_Gad_H])+(Sizes[S_Gad_H] div 2);
  148.                 ng_Width      := Sizes[S_G1_W];
  149.                 ng_Height     := Sizes[S_GAD_H];
  150.                 ng_GadgetText := @G_B_TOPtxt[1];
  151.                 ng_VisualInfo := vi;
  152.                 ng_GadgetID   := G_B_TOP;
  153.             End;
  154.             { create gadgets }
  155.             Gads[G_B_TOP] := CreateGadgetA(BUTTON_KIND, Gads[G_CC], @Gadgetflags, @tgs);
  156.                
  157.             With GadgetFlags Do Begin
  158.                 ng_TopEdge    := ng_TopEdge + Sizes[S_Gad_H];
  159.                 ng_GadgetText := @G_B_UPtxt[1];
  160.                 ng_GadgetID   := G_B_UP;
  161.             End;
  162.             Gads[G_B_UP] := CreateGadgetA(BUTTON_KIND, Gads[G_B_TOP], @Gadgetflags, @tgs);
  163.                
  164.             With GadgetFlags Do Begin
  165.                 ng_TopEdge    := ng_TopEdge + Sizes[S_Gad_H];
  166.                 ng_GadgetText := @G_B_DOWNtxt[1];
  167.                 ng_GadgetID   := G_B_DOWN;
  168.             End;
  169.             Gads[G_B_DOWN] := CreateGadgetA(BUTTON_KIND, Gads[G_B_UP], @Gadgetflags, @tgs);
  170.                
  171.             With GadgetFlags Do Begin
  172.                 ng_TopEdge    := ng_TopEdge + Sizes[S_Gad_H];
  173.                 ng_GadgetText := @G_B_BOTTOMtxt[1];
  174.                 ng_GadgetID   := G_B_BOTTOM;
  175.             End;
  176.             Gads[G_B_BOTTOM] := CreateGadgetA(BUTTON_KIND, Gads[G_B_DOWN], @Gadgetflags, @tgs);
  177.             
  178.             tgs[0].ti_Data := False_;
  179.             With GadgetFlags Do Begin
  180.                 ng_TopEdge    := ng_TopEdge + Sizes[S_Gad_H];
  181.                 ng_GadgetText := @G_B_SORTtxt[1];
  182.                 ng_GadgetID   := G_B_SORT;
  183.             End;
  184.             Gads[G_B_SORT] := CreateGadgetA(BUTTON_KIND, Gads[G_B_BOTTOM], @Gadgetflags, @tgs);
  185.             
  186.             With GadgetFlags Do Begin
  187.                 ng_TopEdge    := ng_TopEdge + Sizes[S_Gad_H];
  188.                 ng_GadgetText := @G_B_NEWtxt[1];
  189.                 ng_GadgetID   := G_B_NEW;
  190.             End;
  191.             Gads[G_B_NEW] := CreateGadgetA(BUTTON_KIND, Gads[G_B_SORT], @Gadgetflags, @tgs);
  192.  
  193.             tgs[0].ti_Data := True_;
  194.             With GadgetFlags Do Begin
  195.                 ng_TopEdge    := ng_TopEdge + Sizes[S_Gad_H];
  196.                 ng_GadgetText := @G_B_REMOVEtxt[1];
  197.                 ng_GadgetID   := G_B_REMOVE;
  198.             End;
  199.             Gads[G_B_REMOVE] := CreateGadgetA(BUTTON_KIND, Gads[G_B_NEW], @Gadgetflags, @tgs);
  200.             
  201.             With GadgetFlags Do Begin
  202.                 ng_TopEdge    := ng_TopEdge + Sizes[S_Gad_H];
  203.                 ng_GadgetText := @G_B_COPYtxt[1];
  204.                 ng_GadgetID   := G_B_COPY;
  205.             End;
  206.             Gads[G_B_COPY] := CreateGadgetA(BUTTON_KIND, Gads[G_B_REMOVE], @Gadgetflags, @tgs);
  207.                
  208.             tgs[0].ti_Data := False_;
  209.             tgs[2].ti_Tag  := GTLV_ShowSelected;
  210.             tgs[2].ti_Data := 0;
  211.             tgs[3].ti_Tag  := GTLV_Labels;
  212.             tgs[3].ti_Data := LONG(CurrentList);
  213.             tgs[4].ti_Tag  := TAG_END;
  214.             With GadgetFlags Do Begin
  215.                 ng_Height     := (ng_TopEdge+ng_Height)-((Sizes[TBS]+Sizes[S_Gad_H])+(Sizes[S_Gad_H] div 2));
  216.                 ng_LeftEdge   := sizes[S_G2_L]+5;
  217.                 ng_TopEdge    := (Sizes[TBS]+Sizes[S_Gad_H])+(Sizes[S_Gad_H] div 2);
  218.                 ng_Width      := Sizes[S_G2_W];
  219.                 ng_GadgetText := CStrConstPtrAR(@RememberKey, 'Menu Buttons');
  220.                 ng_GadgetID   := G_LV;
  221.                 ng_Flags      := PLACETEXT_ABOVE|NG_HIGHLABEL;
  222.             End;
  223.             Gads[G_LV] := CreateGadgetA(LISTVIEW_KIND, Gads[G_B_COPY], @Gadgetflags, @tgs);
  224.  
  225.             Listviewrows := GadgetFlags.ng_Height div My_Font.ta_YSize;
  226.             
  227.             Labs[0] := CStrConstPtrAR(@RememberKey, 'ARexx');
  228.             Labs[1] := CStrConstPtrAR(@RememberKey, 'Font');
  229.             Labs[2] := CStrConstPtrAR(@RememberKey, 'Palette');
  230.             Labs[3] := CStrConstPtrAR(@RememberKey, 'Qualifiers');
  231.             Labs[4] := CStrConstPtrAR(@RememberKey, 'Screen & Window');
  232.             Labs[5] := CStrConstPtrAR(@RememberKey, 'ScreenMode');
  233.             Labs[6] := CStrConstPtrAR(@RememberKey, 'ScrollFont');
  234.             Labs[7] := CStrConstPtrAR(@RememberKey, 'System & Misc. Settings');
  235.             Labs[8] := CStrConstPtrAR(@RememberKey, 'Titles');
  236.             Labs[9]:= NIL;
  237.             
  238.             SetList := AllocRemember(@Rememberkey, Sizeof(tList), MEMF_CLEAR);
  239.             if SetList = NIL then Halt;
  240.             NewList(SetList);
  241.             For n := 0 to LabMax do begin
  242.                 nd := AllocRemember(@RememberKey, Sizeof(tNode), MEMF_CLEAR);
  243.                 if nd <> NIL then begin
  244.                     nd^.ln_Name := Labs[n];
  245.                     AddTail(SetList, nd);
  246.                 End;
  247.             End;
  248.  
  249.             tgs[3].ti_Data := LONG(SetList);
  250.             With GadgetFlags Do Begin
  251.                 ng_LeftEdge   := ng_LeftEdge+ng_Width+8;
  252.                 ng_GadgetText := CStrConstPtrAR(@RememberKey, 'Settings');
  253.                 ng_GadgetID   := G_C_SET;
  254.                 ng_Flags      := PLACETEXT_ABOVE|NG_HIGHLABEL;
  255.                 ng_Width      := Sizes[S_G2_W];
  256.             End;
  257.             Gads[G_C_SET] := CreateGadgetA(LISTVIEW_KIND, Gads[G_LV], @Gadgetflags, @tgs);
  258.  
  259.             tgs[2].ti_Tag  := TAG_DONE;
  260.             With GadgetFlags Do Begin
  261.                 ng_Height     := Sizes[S_GAD_H];
  262.                 ng_TopEdge    := gads[G_B_COPY]^.TopEdge + gads[G_B_COPY]^.Height + 8;
  263.                 If NOT V39 then ng_TopEdge := ng_TopEdge + Sizes[S_Gad_H];
  264.                 ng_LeftEdge   := sizes[S_G1_L]+5;
  265.                 ng_Width      := Sizes[S_G1_W]+25;
  266.                 ng_GadgetText := @G_B_SAVEtxt[1];
  267.                 ng_Flags      := 0;
  268.                 ng_GadgetID   := G_B_SAVE;
  269.             End;
  270.             Gads[G_B_SAVE] := CreateGadgetA(BUTTON_KIND, Gads[G_C_SET], @Gadgetflags, @tgs);
  271.               
  272.             With GadgetFlags Do Begin
  273.                 ng_Leftedge   := Gads[G_C_SET]^.LeftEdge+Gads[G_C_SET]^.Width-ng_Width;
  274.                 ng_GadgetText := @G_B_CANCELtxt[1];
  275.                 ng_GadgetID   := G_B_CANCEL;
  276.             End;
  277.             Gads[G_B_CANCEL] := CreateGadgetA(BUTTON_KIND, Gads[G_B_SAVE], @Gadgetflags, @tgs);
  278.                         
  279.             { window structure }
  280.             tgs[0].ti_Tag  := WA_Left;
  281.             tgs[0].ti_Data := 0;
  282.             tgs[1].ti_Tag  := WA_Top;
  283.             tgs[1].ti_Data := Sizes[TBS];
  284.             tgs[2].ti_Tag  := WA_InnerWidth;
  285.             tgs[2].ti_Data := GadgetFlags.ng_LeftEdge+GadgetFlags.ng_Width+8;
  286.             tgs[3].ti_Tag  := WA_Height;
  287.             tgs[3].ti_Data := gads[G_B_SAVE]^.TopEdge + gads[G_B_SAVE]^.Height+6;
  288.             tgs[4].ti_Tag  := WA_Title;
  289.             tgs[4].ti_Data := LONG(@Win_Title[1]); 
  290.             tgs[5].ti_Tag  := WA_IDCMP;
  291.             tgs[5].ti_Data := WindowIDCMP;
  292.             tgs[6].ti_Tag  := WA_CloseGadget;
  293.             tgs[6].ti_Data := True_;
  294.             tgs[7].ti_Tag  := WA_DragBar;
  295.             tgs[7].ti_Data := True_;
  296.             tgs[8].ti_Tag  := WA_DepthGadget;
  297.             tgs[8].ti_Data := True_;
  298.             tgs[9].ti_Tag  := WA_AutoAdjust;
  299.             tgs[9].ti_Data := True_;
  300.             tgs[10].ti_Tag := WA_Activate;
  301.             tgs[10].ti_Data:= True_;
  302.             tgs[11].ti_Tag := WA_Gadgets;
  303.             tgs[11].ti_Data:= LONG(gads[G_NI]);
  304.             tgs[12].ti_Tag := WA_Zoom;
  305.             tgs[12].ti_Data:= LONG(@ZoomSizes);
  306.             tgs[13].ti_Tag := $80000093 {WA_NewLookMenus};
  307.             tgs[13].ti_Data:= True_;
  308.             tgs[14].ti_Tag := WA_ScreenTitle;
  309.             tgs[14].ti_Data:= LONG(@Scr_Title[1]);
  310.             tgs[15].ti_Tag := WA_SimpleRefresh;
  311.             tgs[15].ti_Data:= True_;
  312.             tgs[16].ti_Tag := TAG_DONE;
  313.   
  314.             TheWindow := OpenWindowTaglist(NIL,@tgs);
  315.             If TheWindow <> NIL Then begin 
  316.  
  317.                 tgs[0].ti_Tag  := $80080043 {GTMN_NewLookMenus};
  318.                 tgs[0].ti_Data := True_;
  319.                 tgs[1].ti_Tag  := TAG_END;
  320.                 menustrip := CreateMenusA(@mm, NIL);
  321.                 if menustrip <> NIL then
  322.                     if LayoutMenusA(menustrip,vi,@tgs) then
  323.                         OK := SetMenuStrip(TheWindow,MenuStrip);
  324.                 GT_RefreshWindow(TheWindow, NIL);
  325.                 
  326.                 Open_Window := True;
  327.             end;
  328.         end;
  329.     end; 
  330.     UnlockPubScreen(NIL, ScreenDef); 
  331. End;